package com.yanling.mybatis.session;

import java.util.List;

/**
 * @description: 封装了所有数据库的操作
 * 	所有功能都是基于 Excutor 来实现的，Executor 封装了 JDBC 操作
 *
 * @author: yanling
 * @time: 2021/1/1 21:26
 */
public interface SqlSession {

	/**
	 * 根据传入的条件查询单一结果
	 * @param statement  namespace+id，可以用做 key，去 configuration 里面获取 sql 语句，resultType
	 * @param parameter  要传入 sql 语句中的查询参数
	 * @param <T> 返回指定的结果对象
	 * @return
	 */
	<T> T selectOne(String statement, Object parameter);

	/**
	 * 根据条件查询符合条件的全部结果
	 * @param statement namespace+id，可以用做 key，去 configuration 里面获取 sql 语句，resultType
	 * @param parameter 要传入 sql 语句中的查询参数
	 * @param <T> 返回指定的结果对象
	 * @return
	 */
	<T> List<T> selectList(String statement, Object parameter);

	/**
	 * 查询映射器
	 * @param type 映射器接口类
	 * @param <T> 映射器类型
	 * @return
	 */
	<T> T getMapper(Class<T> type);

}
